网络访问问题
简介
结合自己的实战和其他的文章,解释下Kafka的内外网分流。
相关文章
实战
1 ==========如果listeners没有配置=========
1 # listeners = PLAINTEXT://your.host.name:9092
1 #listeners=PLAINTEXT://:9092
-----------------------------------------
1 那么使用的就是对应Broke的hostname
1 advertised.listeners 会根据listeners 信息写入到zk中供其他的Broke和client连接
1
1 写入zk中的数据例子如下,看看broker到zk节点/brokers/{brokerid}/下面的信息示例
1 {
1 "features": {},
1 "listener_security_protocol_map": {
1 "PLAINTEXT": "PLAINTEXT"
1 },
1 "endpoints": ["PLAINTEXT://doris1:9092"],
1 "jmx_port": -1,
1 "port": 9092,
1 "host": "localhost",
1 "version": 5,
1 "timestamp": "1647337490945"
1 }
1
1 那么在其他的broke就要配置下/etc/hosts才能够访问
1 x.x.x.x(BrokerIp) doriss
1
1 ======================================
==========配置例子=========
举例现在内网ip是10.x.x.x
外网的ip是121.x.x.x
有内外网访问的情况
listeners=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:19002
advertised.listeners=INTERNAL://内网ip:9092,EXTERNAL://外网ip:19002
listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT
inter.broker.listener.name=INTERNAL
listeners=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:19001
advertised.listeners=INTERNAL://内网ip:9092,EXTERNAL://外网ip:19001
listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT
inter.broker.listener.name=INTERNAL
listeners=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:19000
advertised.listeners=INTERNAL://内网ip:9092,EXTERNAL://外网ip:19000
listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT
inter.broker.listener.name=INTERNAL
注意点:
假设您在 listeners 中配置了不同的端口,例如 EXTERNAL://0.0.0.0:5001,而在 advertised.listeners 中配置了 EXTERNAL://外网ip:5000,那么 Kafka 代理将监听 5001 端口,但客户端连接时将使用 5000 端口,这将导致连接失败。
因此,在同一监听器下,listeners 和 advertised.listeners 中的端口号必须相同,以确保客户端能够成功连接 Kafka 代理。